72 您所在的位置:网站首页 pcb板标识 DL元件 72

72

2023-07-03 17:19| 来源: 网络整理| 查看: 265

资料编号:072

功能介绍:采用stm32单片机作为主控CPU,采用DHT11传感器采集温湿度,采用光敏传感器采集光照强度,通过按键设置温湿度、光照的阈值,当温度高于设置值,继电器开启散热,当湿度低于设置值,继电器开启加湿,当光敏值大于设置值,继电器打开进行补光,LCD1602显示相关数据,程序中文注释,新手容易看懂,全套实物资料齐全:

下面是实物演示视频和相关实物图片

1ecffe73a56603023e8abbd6afc3e89a.jpeg

cd03e3a057d7eec1743cf908d8f82fec.png

下面是程序部分展示(程序有中文注释,新手容易看懂)

程序部分展示: void ADC_Set(void) { ADC_InitTypeDef ADC_InitStructure;//ADC结构体变量//注意在一个语句快内变量的声明要放在可执行语句的前面,否则出错,因此要放在ADC1_GPIO_Config();前面 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; //使能扫描 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC转换工作在连续模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由软件控制转换,不使用外部触发 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1;//转换通道为1 ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_28Cycles5); ADC_Cmd(ADC1, ENABLE);//使能ADC1 ADC_SoftwareStartConvCmd(ADC1, ENABLE); } int wendu,shidu,guangqiang; //保存温度 湿度 光强 int xiaoshi=70,fenzhong=20;// 湿度设定 光强设定 //这里对按键进行扫描 void anjiansaomiao(void) { static u8_t k1,k2,k3,k4,k5; static u8_t K1Flag=0,K2Flag=0,K3Flag=0,K4Flag=0; //按键扫描,获取按键状态 k1 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_6); k2 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_7); k3 = GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_8); if(k1 == 0)//设置温度 { wendu1++; if(wendu1>99) wendu1=1; } if(k2 == 0)//设置湿度 { shidu1++; if(shidu1>99) shidu1=1; } if(k3 == 0)//设置光照 { gm=gm+10; if(gm>500) gm=1; } } //中断优先级配置 void NVICConfig(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //中断源:[15:10],位于“stm32f10x.h”中 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //抢占优先级:1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //子优先级:1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中断通道 NVIC_Init(&NVIC_InitStructure); } //定时器设置1 void TimerConfig(TIM_TypeDef* TIMx,unsigned int time) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIMx); TIM_TimeBaseStructure.TIM_Period = time * 2; /* 自动重装载寄存器周期的值(计数值) */ /* 累计 TIM_Period个频率后产生一个更新或者中断 */ TIM_TimeBaseStructure.TIM_Prescaler= (4000- 1); /* 时钟预分频数 例如:时钟频率=72MHZ/(时钟预分频+1) */ TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; /* 采样分频 */ TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; /* 向上计数模式 */ TIM_TimeBaseInit(TIMx, &TIM_TimeBaseStructure); TIM_ClearFlag(TIMx, TIM_FLAG_Update); /* 清除溢出中断标志 */ TIM_ITConfig(TIMx,TIM_IT_Update,ENABLE); }

程序打开方法:采用keil5打开,公众号有软件安装包

fbecf3504643b53e2032c5984732cc4a.png

原理图采用【AD】altium designer打开,公众号有安装包

efb0915483a53e940b19fb95a2f01d64.png

f2059d1c6a38a73596d2ce9de50058df.png

0151fce8c1230c789634f14887803bc9.png

付费后即可在下方获取资料下载链接



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有